"""管理内容的api"""
from fastapi import APIRouter, Depends, status, HTTPException
from sqlalchemy.orm import Session
from soulapi.db import get_db
from soulapi.schemas import schema_admin
from soulapi.crud import crud_admin

router_admin = APIRouter()

# restful 接口设计规范中：常用于前后端分离场景
# 面向资源编程（资源：URL->url）
# 每个资源都具有GET,POST,PUT,DELETE四个标准的动作（请求方法） get查询 put更新 post增加 delete删除
# 每个资源动作都是无状态的（HTTP协议短连接（不保存客户端和服务端的连接通道））
# （C或B/S 客户端和服务端）交互数据格式都是用json(content-type:application/json)
# 声明资源服务请求路径


# 接口实现
"""创建管理员账号"""
@router_admin.post("/admin/create/", response_model=schema_admin.AdminRead, summary="新增管理员信息", description='json格式以post方式提交')  # 创建管理员,路径操作加入相应模型类
def create_admin(admin: schema_admin.AdminCreate, db: Session = Depends(get_db)):  # 依赖注入方式获取数据库连接db
    db_admin = crud_admin.get_admin_by_name(db=db, admin=admin.ad_name)
    if db_admin:   # 已经存在，报错
         raise HTTPException(status_code=status.HTTP_400_BAO_REQUEST, detail="管理员登录账号已经被注册的")
    return crud_admin.admin_create(db=db, admin=admin)



"""查询管理员信息"""
# 根据管理员真实姓名查询ad_name
@router_admin.get("/admin/{ad_name}", response_model=schema_admin.AdminRead, summary="根据管理员姓名查询详细信息", description='')  # /**/是URL参数，{ad_name}是传递的参数，根据登录账号，查询管理员，第一个是路径参数
def get_admin(name: str, db: Session = Depends(get_db)):
    db_admin = crud_admin.get_admin_by_name(db=db, ad_name=name)
    if db_admin is None:  # 返回为空，报错
        raise HTTPException(status_code=status.HTTP_400_BAO_REQUEST, detail="管理员:{ad_name}信息没有查询到")
    return db_admin
